//用于管理contact模块的小仓库
import { defineStore } from 'pinia'  //引入创建pinia的方法

import { reqGetToken, reqSendUserMsg } from '@/api'  //引入发送请求获取数据的方法

export const useContactStore = defineStore('contact', {
    //state：仓库存储数据的地方
    state: () => ({
        // token: "", //存储服务端返回的token
        success: 0, //发送用户数据后的消息弹框的状态 0:默认状态 | 1：发送成功 | 2：发送失败
    }),

    //action：处理action，可以书写自己的业务逻辑,可以直接修改state
    actions: {
        //发送请求获取token储存在本地
        async getToken() {
            let result = await reqGetToken()
            if (result.code == 200) {
                localStorage.setItem('token', result.data.token)
            }
        },
        //携带用户数据发送请求
        async sendUserMsg(params = {}, headers) {
            let result = await reqSendUserMsg(params, headers)
            if (result.code === 200) {
                this.success = 1 //消息弹框提示成功
            } else if (result.code === 502) {//未登录，token错误
                this.getToken() //重新发送请求获取token存储本地
                this.success = 2
            } else {
                this.success = 2 //在控制台打印发送失败
            }
        },
    },

    //getters：可以理解为计算属性，用于简化仓库属性。让组件获取仓库数据更便捷
    getters: {

    }
})